package 我的Java学习_算法基础.day_06;

public class _094_欧几里得算法 {
    public static void main(String[] args) {
        int m = 15,n = 20;
        System.out.println(gcd(m,n));
        int x1 = 3,y1 = 10,x2 = 8,y2 =20;
        System.out.println(count(x1,y1,x2,y2));
    }
    private static int gcd(int m,int n){
//        if(n==0){
//            return m;
//        }
//        return gcd(n,m%n);
        return n==0?m:gcd(n,m%n);
    }

    /**
     * 两点(x1,y1).(x2,y2)间的整数坐标点的个数
     * @param x1
     * @param y1
     * @param x2
     * @param y2
     * @return 整数坐标点的个数
     */
    private static int count(int x1,int y1,int x2,int y2){
        int m = Math.abs(x2-x1),n = Math.abs(y2-y1);
        int t = gcd(m,n); //m、n的最大公约数，表示分成的段
        return t-1;//t-1为中间点的个数
    }
}
